var express = require('express');
var router = express.Router();
var path = require("path");
var AlipaySdk = require(path.join(process.cwd(), "/modules/aliPay.js"));
var AlipayFormData = require('alipay-sdk/lib/form').default;


router.post("/pay", function (req, res, next) {
    let orderId = req.body.orderId || "202205130000"
    // * 添加购物车支付支付宝 */
    // 调用 setMethod 并传入 get，会返回可以跳转到支付页面的 url
    const formData = new AlipayFormData();
    formData.setMethod('get');
    // 通过 addField 增加参数
    // 在用户支付完成之后，支付宝服务器会根据传入的 notify_url，以 POST 请求的形式将支付结果作为参数通知到商户系统。
    formData.addField('notifyUrl', 'https://www.baidu.com'); // 支付成功回调地址，必须为可以直接访问的地址，不能带参数
    formData.addField('bizContent', {
        outTradeNo: orderId, // 商户订单号,64个字符以内、可包含字母、数字、下划线,且不能重复
        productCode: 'FAST_INSTANT_TRADE_PAY', // 销售产品码，与支付宝签约的产品码名称,仅支持FAST_INSTANT_TRADE_PAY
        totalAmount: '0.01', // 订单总金额，单位为元，精确到小数点后两位
        subject: '商品', // 订单标题
        body: '商品详情', // 订单描述

    });
    formData.addField('returnUrl', 'https://opendocs.alipay.com');//加在这里才有效果,不是加在bizContent 里面
    // 如果需要支付后跳转到商户界面，可以增加属性"returnUrl"
    const result = AlipaySdk.exec(  // result 为可以跳转到支付链接的 url
        'alipay.trade.page.pay', // 统一收单下单并支付页面接口
        {}, // api 请求的参数（包含“公共请求参数”和“业务参数”）
        { formData: formData },
    );
    result.then((resp) => {
        res.send(
            {
                "success": true,
                "message": "success",
                "code": 200,
                "timestamp": (new Date()).getTime(),
                "result": resp
            }
        )
    })
});

module.exports = router;